<?php
class ModuleModel extends Model {
	
	/*array(
		0.字段名   
		1.验证规则 [require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字]
		2.提示信息  {%usr_form_validata_email_email}
		3.验证条件 [0.(默认)存在字段就验证;1.必须验证;2.值不为空的时候验证]
		4.附加规则 [regex、function、callback、confirm、equal、in、length、between、expire、ip_allow、ip_deny、unique]
		5.验证时   [1.新增数据时候验证;2.编辑数据时候验证;3.(默认)全部情况下验证]
	);*/
	protected $_validate=array(
		array('module_name','require','{%mod_form_ele_module_name_tip}'),
		array('module_name','checkModuleExsits','{%mod_form_ele_module_name_exstis}',1,'callback'),
	);
	
	//自动填充内容  addtime
	protected $_auto   =   array(
		array('addtime','time',1,'function'),//add添加的时候自动填充
		array('solevar','create_id',1,'function'),
	);
	
	//检查模型对应的标识是否已经存在
	protected function checkModuleExsits($name){
		$flag = true;
		$oldname = I("param._module_name","","strtolower,ucfirst");
		$name = ucfirst(strtolower($name));
		
		if($oldname != $name){
			$node = D("Node");
			$mods = $node->getModule(array());
				
			if(in_array($name, $mods)){
				$flag = false;
			}
		}
		return $flag;
	}
	
	//根据moduleName找到对应的模型
	public function getMoudle($name,$field="id"){
		return $this->where("module_name='".$name."'")->getField($field);
	}

	//根据模型编号找到对应的字段列表
	public function getModuleField($id){
		$filed = M('ModuleFiled');
		return $filed->where('module_id='.$id.'')->order('order_num DESC')->select();
	}
	
	//缓存字段
	public function cacheModuleField($id){
		
		$cid = "Module_".$id;	
		$filed = $this->getModuleField($id);
		F("$cid",$filed);
	}
	
	//缓存模型
	public function cacheModule($id){
		
		$zhu = "Module_zhu";
		$zi  = "Module_zi";
		$fu  = "Module_fu";
		$mo  = "Module";
		$cate= "Module_cate";
		
		//F("Module_".$v['id'],$this->getModuleField($v['id']));
		$lists  = $this->field("id,title,module_name,module_pid,module_type,module_tag")->select();
		$zhuarr = array();
		$ziarr  = array();
		$fuarr  = array();
		foreach($lists as $v){
			if($v['module_type'] == 1){
				$name     = ucfirst($v['module_name']);
				$zhuarr[] = $v ;
				$moarr[]  = $name;
				$carr[$name] = array($name,$v['title'],2);
			}elseif($v['module_type'] == 2){
				$name    = ucfirst($v['module_name']);
				$ziarr[] = $v ;
				$moarr[]  = $name;
				$carr[$name] = array($name,$v['title'],2);
			}elseif($v['module_type'] == 3){
				$fuarr[] = $v ;
			}
		}
		F("$zhu",$zhuarr);
		F("$zi" ,$ziarr);
		F("$fu" ,$fuarr);
		F("$mo" ,$moarr);
		F("$cate" ,$carr);
		
		return $lists;
	}
}
?>